package de.preisrobot.service;

import java.util.Date;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import de.preisrobot.entity.CrawlerLinkUrl;
import de.preisrobot.persistence.dao.LinkDao;

@Service(value="linkService")
public class AnbieterLinkProcessServiceImpl implements AnbieterLinkProcessService
{
   
   @Resource(name = "linkDao")
   private LinkDao linkDao;

   @Override
   @Transactional(propagation=Propagation.REQUIRED)
   public void storeLink(String sourceUrlString, boolean linkWasBroken, int linkTyp, int anbieter , int categoryId)
   {
      CrawlerLinkUrl grabUrl = linkDao.findLinlByUrl(sourceUrlString);

      if (grabUrl == null)
      {
         grabUrl = new CrawlerLinkUrl();
         grabUrl.setLink(sourceUrlString);
         grabUrl.setBrokenLink(linkWasBroken ? 1 : 0);
         grabUrl.setLastvisited(new Date());
         grabUrl.setAnbieterId(anbieter);
         grabUrl.setLinktyp(linkTyp);
        
         if(categoryId >0)
            grabUrl.setCategoryId(categoryId);
         
         linkDao.save(grabUrl);
      }
      else
      {
         grabUrl.setBrokenLink(linkWasBroken ? 1 : 0);
         grabUrl.setLastvisited(new Date());
         grabUrl.setAnbieterId(anbieter);
         grabUrl.setLinktyp(linkTyp);
         
         if(categoryId >0)
            grabUrl.setCategoryId(categoryId);
         
         linkDao.updateLink(grabUrl);
      }
   }

   @Override
   @Transactional
   public List<CrawlerLinkUrl> getLinks(int anbieterid)
   {
      return linkDao.findLinksForAnbieter(anbieterid);
   }
}
